﻿using System;
//using Microsoft.Reporting.WinForms;
using System.Collections.Generic;
using System.ComponentModel;
using Tracker.Data.DataTransfer;
using Tracker.Presenters;

namespace Tracker.Views
{
    public interface ITrackerView
    {
        
        
        #region Input
        Task CurrentTask { get;  }
        
        int FilterStatus { get; set; }
        List<StatusDomain> FilterStatusSource { get; set; }
        string FilterTime { get; set; }
        List<string> FilterTimeSource { get; set; }

        BindingList<dynamic> TaskInputView {  set; }
        BindingList<Log> LogInputView {  set; }
        string InputSearchWord { get; set; }

        //ITrackerPresenter Presenter { get; set; }
        void ShowMessage(string message);
        //System.ComponentModel.BindingList<Task> TaskView { get; set; }

        string FilePath { get; set; }
        #endregion

        #region Detail Search
        
        DateTime DetailCreateTimeEnd { get; set; }
        DateTime DetailCreateTimeStart { get; set; }
        DateTime DetailUpdateTimeEnd { get; set; }
        DateTime DetailUpdateTimeStart { get; set; }
        string DetailSearchWord { get; set; }
        System.Collections.Generic.List<dynamic> DetailsearchView { get; set; }
        
        #endregion

        #region Summary Search
        
        DateTime SummaryCreateTimeEnd { get; set; }
        DateTime SummaryCreateTimeStart { get; set; }
        DateTime SummaryUpdateTimeEnd { get; set; }
        DateTime SummaryUpdateTimeStart { get; set; }
        System.Collections.Generic.List<dynamic> TaskSearchView { get; set; }
        
        #endregion

        #region Report

        DateTime SummaryReportCreateTimeEnd { get; set; }
        DateTime SummaryReportCreateTimeStart { get; set; }
        DateTime SummaryReportUpdateTimeEnd { get; set; }
        DateTime SummaryReportUpdateTimeStart { get; set; }
        List<ReportDataSummary> ReportSource { get; set; }
        string ReportPath { get; set; }

        #endregion

        #region notify icon
        
        event EventHandler ShowOptionForm;
        event EventHandler<Task> InitializeLogView;
        event EventHandler InitializeReport;
        event EventHandler<Log> DeleteLog;
        event EventHandler<Task> DeleteTask;
        event EventHandler<Log> UpdateLog;
        event EventHandler<Task> UpdateTask;
        event EventHandler InitializeTaskView;
        event EventHandler InitializeSummarySearchView;
        event EventHandler InitializeDetailSearchView;
        event EventHandler<string> FilesLinkClicked;

        #endregion

    }
}
